package simpleness;

import com.sun.deploy.util.StringUtils;
import com.sun.xml.internal.bind.v2.TODO;
import org.junit.Test;
import org.omg.CORBA.IRObject;
import sun.swing.StringUIClientPropertyKey;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *  计算某字符出现次数
 *
 * @author sdm
 * @version 1.0
 * @date 2023/3/25 12:47
 */
public class HJ2 {


    /**
     * 总结：
     *      1. InputStream、InputStreamReader、BufferedReader 区别？
     *          system.in=inputStream输入流 --> InputStreamReader输入流的读者 --> BufferedReader缓冲区输入流的读者
     *      2. \n 换行  \r 回车
     *      3. a-z ASCII值 97-122(26个英文字母)  a - 32 = A
     */

    @Test
    public void My() throws IOException {

        // 方式一 都转为小写，ASCII码值判断
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取第一行
        char[] arr = br.readLine().toLowerCase().toCharArray();    //readLine() 阅读一行文本。换行('\n')、回车('\r')或回车后跟换行中的任意一个都可以终止一行。
        // 读取第二行
        char[] tag = br.readLine().toLowerCase().toCharArray();

        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (tag[0] == arr[i]){
                count++;
            }

        }
        System.out.println(count);

        // 方式二 区分大写小写，ASCII码值判断
        // BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // char[] key = br.readLine().toCharArray();
        // char[] wd = br.readLine().toCharArray();
        // char x = wd[0];
        // int n = 0;

        // for(int i=0;i<key.length;i++){
        //     if(x==key[i] | x==(char)(key[i]+32) | x==(char)(key[i]-32)){
        //         n = n + 1;
        //     }
        // }

        // System.out.println(n);




    }

    // 方式三 哈希 key不重复
    /**
     * 哈希  统计字符串中每个字符出现个数
     *      原文链接：https://blog.csdn.net/timexx/article/details/106939806
     *      如果要统计字符串中每个字符出现个数，那么结果就是：字符x1出现了n1次，字符x2出现了n2次，字符x3出现了n3次。。。其中x1、x2、x3是不能重复的，
     *      HashMap的key也是不能重复的，刚好符合这个需求，所以可以用HashMap来存储每个字符和它对应的次数。
     *
     *      步骤：
     *      第一步，创建一个HashMap<Character, Integer>型的HashMap对象hashMap，Character对应字符的类型，Integer对应它的出现次数。
     *      第二步，遍历字符串中的字符，对每个字符要分2种情况：
     *          （1）hashMap的key中还没有此字符。这时要把此字符的次数置为1。
     *          （2）hashMap的key中已经有此字符。这时要先把该字符的次数取出，把它加1之后再放进去。
     */
    @Test
    public void HJ22() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取第一行
        char[] arr = br.readLine().toLowerCase().toCharArray();
        // 读取第二行
        char[] tag = br.readLine().toLowerCase().toCharArray();
        // key-value:字符-出现次数
        HashMap<Character, Integer> hashMap = new HashMap<>();
        hashMap.put(tag[0],0);
        // 通过key=tag[0],遍历arr,如果arr=tag[0]ASCII值,count++
        for (int i = 0; i <arr.length; i++) {
            if (arr[i] == tag[0]){
                hashMap.put(tag[0],hashMap.get(tag[0])+1);
            }
        }
        System.out.println(hashMap.get(tag[0]));
    }




    @Test
    public void test(){
        char i = 'a';
        char j = 97;
        char k = 'A';
        char l = 97-32;
        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
        System.out.println(l);
    }



}
